# -*- coding: utf-8 -*-
"""
Created on Tue Sep 17 18:46:19 2024

@author: 焊板子的兔子
"""

"""
QSpinBox和QDoubleSpinBox控件是专门用于输入数值的控件

QSpinBox只能输入整数
QDoubleSpinBox只能输入浮点数

实例化方法：
QSpinBox(parent:QWidget=None)
QDoubleSpinBox(parent:QWidget=None)

本程序源码以及控件常用信号和方法说明，可在以下仓库中找到 https://gitee.com/xhy_312/Qt-For-Python.git

"""
import sys
from PySide6.QtWidgets import QApplication,QWidget,QLineEdit,QSpinBox,QAbstractSpinBox
from PySide6.QtCore import QSize


class myWidget(QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)
        self.setFixedSize(QSize(640,480))#QSize类用于描述尺寸，setFixedSize（）方法用于设置一个固定尺寸窗口
        
        #创建一个SpinBox控件
        self.spinBox = QSpinBox(self)
        self.spinBox.setGeometry(50,50,150,30)
        #self.spinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.NoButtons)#如果不想要微调按钮，可以用此方式隐藏按钮
        self.spinBox.setButtonSymbols(QAbstractSpinBox.ButtonSymbols.UpDownArrows)#将按钮设置回上下箭头
        
        self.spinBox.setRange(10, 15)#通过setRange方法，设置控件允许输入的最小值和最大值
                                     #也可以通过setMinimum()、setMaximum()方法单独设置最小值和最大值限制                                     
        #self.spinBox.setCorrectionMode(QAbstractSpinBox.CorrectToPreviousValue)#如果输入有误，将值修正为最后一次正确值     
        self.spinBox.setCorrectionMode(QAbstractSpinBox.CorrectToNearestValue)#如果输入有误，将值修正为最接近正确值的值      
              
        self.spinBox.setSingleStep(1)#设置微调控件步进量
        self.spinBox.setWrapping(False)#为True时，到达限制边界值后会循环，为False时，不循环
        
        self.spinBox.setPrefix('温度')#设定前缀字符，例如计量符号
        self.spinBox.setSuffix('℃')#设定后缀字符，例如单位
        
        self.spinBox.editingFinished.connect(self.func1)
        
        #创建lineEdit，用于在spinBox控件输入完成后，显示其内容
        self.lineEdit = QLineEdit(self)
        self.lineEdit.setGeometry(50,100,200,30)    
        
        
        
    def func1(self):
        #self.lineEdit.setText(self.spinBox.text())#获取文本（包含前缀、后缀）    
        self.lineEdit.setText(str(self.spinBox.value()))#获取数值（不含前缀、后缀）     
    
        
   
                     
     
if __name__ == "__main__":
    app = QApplication.instance()   #一个应用程序实例对象
    if app is None:
        app = QApplication()
    myWindow = myWidget()
    myWindow.show()
    n = app.exec()
    sys.exit(n)